iT邦幫忙

2023 iThome 鐵人賽

DAY 17
1
Odoo

Odoo開發系列 第 17

[Day 17]odoo14 - Inherit介紹(二)

  • 分享至 

  • xImage
  •  

昨天跟大家講解了model如何繼承,今天要來講解繼承視圖的部分。
先上一個繼承視圖的簡單範例:

<record id="view_idx_repair_form_inherit" model="ir.ui.view">
    <field name="name">idx.repair.form.inherit</field>
    <field name="model">idx.repair</field>
    <field name="inherit_id" ref="idx_repair.view_idx_repair_form"/>
    <field name="arch" type="xml">
        <!--第一種繼承方法-->
        <xpath expr="//field[@name='repair_detail']" position="replace">
            <field name="repair_date"/>
        </xpath>
        
        <!--第二種繼承方法-->
        <field name="repair_detail" position="replace">
          <field name="test_field"/>
        </field>
    </field>
</record>

下面介紹各項參數

  • id:繼承view的id,只要不重複即可。
  • name:繼承view的name,僅為了識別用。
  • model:繼承view的所屬model。
  • inherit_id:用來指定要繼承的視圖id
  • arch:用來定義view。
  • groups_id:用來定義僅擁有權限的使用者才會繼承該視圖,範例如下。
    <field name="groups_id" eval="[(6, 0, [ref('模組名稱.所屬權限id')])]"/>

下面來講解繼承時的第一種寫法。
繼承時要使用xpath語法來撰寫,xpath是用來對原本的視圖,進行自訂義的修改,一個record中,若相同視圖下有多個欄位畫面需要修改時,可使用多個<xpath>,不需要重複定義。

  • expr:用來定義要繼承的位置,若在原視圖中找不到定位點或是找到多個定位點時都會顯示錯誤。
  • position:用來定義繼承的規則,有五種參數可以設置:
    • before:在定位點的前面加上自訂義的視圖。
    • after:在定位點的後面加上自訂義的視圖。
    • replace:將定位點的全部替換為自訂義的視圖。
    • inside:將定位點的裡面加上自訂義的視圖。
    • attributes:將定位點原有的內容或參數進行修改,若參數設置為此,需要使用attribute的tag來進行修改,範例如下。
    <xpath expr="//field[@name='repair_detail']" position="attributes">
        <attribute name="readonly">1</attribute>
    </xpath>
    

第二種繼承方法則是直接以欄位名稱當定位點,再定義position即可直接繼承,position的參數設置與xpath的用法相同,就不再重複說明,但在繼承的使用上,普遍都會採用第一種的xpath。

今天講完了繼承視圖的方法,那麼關於odoo的繼承就先介紹到這邊。


上一篇
[Day 16]odoo14 - Inherit介紹(一)
下一篇
[Day 18] odoo14 - @api.onchange及@api.depends介紹
系列文
Odoo開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言